TextHandle: Don't draw handles if not visible
authorAlexander Larsson <alexl@redhat.com>
Tue, 5 Feb 2013 11:27:39 +0000 (12:27 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 7 Feb 2013 10:11:38 +0000 (11:11 +0100)
When calling gtk_widget_draw() on the entry gtk_cairo_should_draw_window()
will return TRUE for all windows. This is used when rendering a widget to
somewhere other than the screen, and its now used for transparent widgets.
This caused the texthandle to always draw itself and terminate the draw
handler for the entry.

Instead we now only draw the markers when really visible, plus we return
FALSE to avoid stopping the entry drawing.

https://bugzilla.gnome.org/show_bug.cgi?id=687842

gtk/gtktexthandle.c

index 871b3ac73e783d718a14b014fa3073a7908caa84..97449b485be348056c7a0005cda8ca1934c638f3 100644 (file)
@@ -212,6 +212,7 @@ gtk_text_handle_widget_draw (GtkWidget     *widget,
 {
   GtkTextHandlePrivate *priv;
   GtkTextHandlePosition pos;
+  HandleWindow *handle_window;
 
   priv = handle->priv;
 
@@ -225,8 +226,11 @@ gtk_text_handle_widget_draw (GtkWidget     *widget,
   else
     return FALSE;
 
-  _gtk_text_handle_draw (handle, cr, pos);
-  return TRUE;
+  handle_window = &priv->windows[pos];
+  if (gdk_window_is_visible (handle_window->window))
+    _gtk_text_handle_draw (handle, cr, pos);
+
+  return FALSE;
 }
 
 static gboolean